package com.raindrop.rd.parser.ast;

import com.raindrop.rd.RDScriptContext;
import com.raindrop.rd.parser.Span;

import javax.script.ScriptContext;

/**
 * 每个ast需要执行的代码块
 *
 * @author BillDowney
 * @date 2021/3/23 14:44
 */
public abstract class Block {
    /**
     * 对应的文本
     */
    private final Span span;

    protected Block(Span span) {
        this.span = span;
    }

    /**
     * 执行当前代码块
     *
     * @param context 当前上下文
     * @return 如果有返回值则会返回对应数据，否则返回{@link Void}
     */
    public abstract Object eval(ScriptContext context);
}
